package com.lnsoft.cac.server.handle.codec.frameMessage;


import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import lombok.Data;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

@Data
/**
 * 配置/状态交互---通信流量信息查询
 * */
public class Cfg_Flow_Msg {
    private int dataNum;            //  frame:1byte 监测数据个数
    private List<String> dataList;  //  frame:n*4byte   采集时间(世纪秒，解析到月);


    public ByteBuf toByteBuf() throws Exception{
        if (dataList == null) {
            throw new Exception("arg is err.");
        }
        if (dataList.size() != dataNum) {
            throw new Exception("arg is err.");
        }
        ByteBuf bf = Unpooled.buffer();
        bf.writeByte(dataNum);
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM");
        for (String t : dataList) {
            Date date = sf.parse(t);
            bf.writeIntLE((int) ((long)(date.getTime()) / 1000));
        }
        return bf;
    }


//
//    //  解析 { 配置/状态交互---通信流量信息查询} 帧报文内容区 到消息体中
//    public static Cfg_Flow_Cfm decFrameBody(@NonNull byte[] frameBody) throws Exception {
//        ByteBuf bf = Unpooled.wrappedBuffer(frameBody);
//        Cfg_Flow_Cfm msg = new Cfg_Flow_Cfm();
//        int len = frameBody.length;
//        if (len == 0) {
//            return null;
//        }
//        msg.setStatTime(bf.getIntLE(0) & 0xFFFFFFFF);
//        int num = bf.getByte(4) & 0xFF;
//        if (len != num * 12 + 5) {
//            throw new Exception("frameBody 异常");
//        }
//        msg.setMeasureData_Num(bf.getByte(4) & 0xFF);
//
//        List<Cfg_Flow_Data_Cfm> list = new ArrayList();
//        for (int i = 0; i < num; i++) {
//            Cfg_Flow_Data_Cfm item = new Cfg_Flow_Data_Cfm();
//            item.setStat_Time(bf.getIntLE(5 + i * 12) & 0xFFFFFFFF);
//            item.setSend_Flow(bf.getIntLE(9 + i * 12) & 0xFFFFFFFF);
//            item.setReceive_Flow(bf.getIntLE(13 + i * 12) & 0xFFFFFFFF);
//            list.add(item);
//        }
//        msg.setItems(list);
//        return msg;
//    }

}
